﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int Fact(int n)
{
	/*
		递归中的递就是递推的意思，归就是回归的意思
		递归在书写的时候，有2个必要条件：
•		递归存在限制条件，当满⾜这个限制条件的时候，递归便不再继续。
•		每次递归调⽤之后越来越接近这个限制条件。
	*/
	if (n == 0)		return 1;
	else if(n>0)	return n*Fact(n-1);
}
void Print(int n)
{
	if (n > 9) Print(n / 10);
	printf("%d ", n % 10);
}
/*斐波那契数*/
int Fib(int n)//计算次数太大，涉及多次重复计算
{
	if (n <= 2)
		return 1;
	else
		return Fib(n - 1) + Fib(n - 2);
}
int Fibs(int n)
{
	int a = 1;
	int b = 1;
	int c = 1;
	while (n > 2)
	{
		c = a + b;
		a = b;
		b = c;
		n--;
	}
	return c;
}
int main(void)
{
	int n = 0;
	int scanf_cnt = 0;
	scanf_cnt=scanf("%d", &n);
	printf("%d\n", Fact(n));
	scanf_cnt = scanf("%d", &n);
	Print(n);
	return 0;
}